package com.yxh.www.author.service;

import com.yxh.www.author.domain.SmRole;
import com.yxh.www.common.result.Result;
import com.yxh.www.mysql.base.BaseService;

import java.util.List;

/**
 * <p>
 * 系统角色-RBAC 服务类
 * </p>
 *
 * @author Yangxiaohui
 * @since 2020-05-09
 */
public interface SmRoleService extends BaseService<SmRole>{
    /**
     * 新增系统角色
     *
     * @param roleName 角色名称    必填
     * @param roleKey  角色唯一标识  必填 唯一
     * @param remark   备注  非必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> addSmRole(String roleName, String roleKey, String remark);

    /**
     * 修改系统角色
     *
     * @param id         角色ID   必填
     * @param roleStatus 角色状态  非必填
     * @param remark     角色备注   非必填
     * @return 统一响应 {@link Result}
     */
    Result<Object> modifySmRole(String id, String roleStatus, String remark);

    /**
     * 根据ID删除系统角色
     *
     * @param ids 角色ID集合
     * @return 统一响应 {@link Result}
     */
    Result<Object> removeSmRole(String... ids);

    /**
     * 查询系统角色列表
     *
     * @param roleName 角色名称    模糊查询
     * @return 统一响应 {@link Result< List >} 实体 {@link SmRole}
     */
    Result<List<SmRole>> listSmRole(String roleName);

    /**
     * 分页查询系统角色列表
     *
     * @param roleName 角色名称    模糊查询
     * @param pageNum  页码          默认值 1
     * @param pageSize 页面数据长度    默认值 20
     * @return 统一响应 {@link Result}
     */
    Result<Object> pageSmRole(String roleName, Long pageNum, Long pageSize);
}
